package com.qijian.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 启用外挂处理
 * <p>
 * <p>
 * 此注解标注该方法结束后
 * 会自动触发所有类型的外挂器
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface PlugAnn {
    /**
     * 是否需要携带返回值 默认不需要
     * <p>
     * 如果携带返回值，则返回值在最后
     */
    boolean value() default false;

    /**
     * 是否需要根据返回值决定是否执行Plug
     * <p>
     * 只有返回值为Boolean生效
     * true 执行
     * false 不执行
     */
    boolean isExecPlug() default false;

    /**
     * 分组，与外挂器的范型一致则会执行外挂器
     *
     * @return
     */
    Class<?>[] groupClass() default {};

    /**
     * 默认携带的固定参数
     *
     * @return
     */

    String[] params() default {};
}
